package com.zhima.data;

import cn.hutool.core.util.RandomUtil;

import java.math.BigDecimal;

/**
 * 随机数据抽象类
 * 定义了一些随机数据的公共属性和方法
 */
public abstract class AbstractRandomData {
    protected BigDecimal min;
    protected BigDecimal max;

    public AbstractRandomData(BigDecimal min, BigDecimal max) {
        this.min = min;
        this.max = max;
    }

    public abstract RandomDataType getRandomDataType();

    public abstract RandomDataType getElementDataType();


    public Object randomElement() {
        switch (getElementDataType()) {
            case INT:
                return RandomUtil.randomInt(min.intValue(), max.intValue()+1);
            case LONG:
                return RandomUtil.randomLong(min.longValue(), max.longValue()+1);
            case BIG_INTEGER:
                return RandomUtil.randomBigDecimal(min, max.add(BigDecimal.ONE)).toBigInteger();
            case BOOLEAN:
                return RandomUtil.randomBoolean();
            default:
                return null;
        }
    }
}
